package user;

import ioperations.*;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-22
 * Time: 9:55
 */
public class AdminUser extends User {

    public AdminUser(String name) {
        super(name);
        this.iOperations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new ShowOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("欢迎" + this.name + "来到图书系统");
        System.out.println("*******管理员菜单*******");
        System.out.println("1. 查找图书");
        System.out.println("2. 新增图书");
        System.out.println("3. 删除图书");
        System.out.println("4. 显示图书");
        System.out.println("0. 退出系统");
        System.out.println("**********************");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的操作：");
        int choice = scanner.nextInt();
        return choice;
    }
}
/*
`AdminUser`类是`User`类的子类，代表图书系统的管理员用户。以下是`AdminUser`类逻辑关系的简短分析：

1. **继承关系**：
   - `AdminUser`继承了`User`类，这意味着它继承了`User`的所有属性和方法，并且可以添加或覆盖父类的方法以实现特定的管理员功能。

2. **构造方法**：
   - 构造方法接收管理员的名字作为参数，并通过调用父类的构造方法来设置该名字。
   - 在构造方法中，初始化了`iOperations`数组，该数组包含了管理员可以执行的操作。这些操作包括退出、查找、添加、删除和显示图书。

3. **覆盖的`menu`方法**：
   - `menu`方法被覆盖以提供管理员特定的菜单选项。
   - 方法首先输出欢迎信息和管理员菜单，然后提示用户输入操作选择。
   - 使用`Scanner`类从用户那里接收输入，表示用户选择的操作编号。
   - 返回用户选择的操作编号，这个编号将用于后续调用`doIoperation`方法来执行相应的操作。

简而言之，`AdminUser`类通过继承`User`类并覆盖其`menu`方法，为管理员用户提供了特定的功能和操作菜单。管理员可以执行查找、新增、删除和显示图书等操作，这些都是通过`iOperations`数组中存储的相应操作类来实现的。
 */